package auction

class BidController {

    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
	
	
	
	//TODO - implement check user
	def showBid = {
		def bidInstanceList = Bid.findAllByUser(session.user)
		if (!bidInstanceList) {
			flash.message = "Du hast noch keine Gebote abgegeben"
			redirect(controller: "userprofile", action: "showData")
		}
		else {
			[bidInstanceList: bidInstanceList]
		}
	}
	
	
	
	/**
	* Die Index-Methode leitet auf 'List' um
	*/
    def index = {
        redirect(action: "list", params: params)
    }

	/**
	* Die list-Methode gibt 10 Instanzen an einen View
	*/
    def list = {
        params.max = Math.min(params.max ? params.int('max') : 10, 100)
        [bidInstanceList: Bid.list(params), bidInstanceTotal: Bid.count()]
    }


	/**
	* Die save-Methode legt eine neue Auction-Instanz an und �bergibt die Parameter aus dem zugeh�rigen View
	* an diese Instanz. Au�erdem wird der Session-User an die Instanz angehangen.
	* Falls die Instanz gespeichert wurde, wird eine Nachricht ausgegeben und auf die show-methode umgeleitet.
	* Andernfalls wird die Instanz an den create-View �bergeben und dieser aufgerufen.
	* Der Betrag wird zunächst durch Austausch von Kommas durch Punkte normalisiert und anschließend
	* zu Float umgewandelt.
	* Die Funktion ist nur für eingeloggte User möglich (siehe Filters)
	*/
    def save = {
		try{
			params.bidAmount = params.bidAmount.replace(",", ".").toFloat()
		}
		catch(e){
			flash.message = "Das ist keine gültige Zahl!"
		}
        def bidInstance = new Bid(params)
		//use sessions user as user for new object
		bidInstance.user = session.user
        if (bidInstance.validate() && bidInstance.save()) {
            flash.message = "${message(code: 'default.created.message', args: [message(code: 'bid.label', default: 'Bid'), bidInstance.id])}"
            redirect(controller: "auction", action: "show", id: bidInstance.auction.id)
        }
        else {
			flash.error = "Das geht so nicht. Der Betrag stimmt nicht."
			redirect(controller: "auction", action: "show", id: bidInstance.auction.id)
            //render(view: "create", model:[bidInstance: bidInstance]) doesnt work properly.
        }
    }


}
